﻿using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Xml.Serialization;

/// <summary>
/// Summary description for CXHotelItinerary
/// </summary>
namespace CE.HotelEan
{
    public class CXHotelItinerary
    {
        public CXHotelItinerary()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        public HotelItineraryResponse HotelItineraryResponse { get; set; }
    }
    public class HotelItineraryResponse : BaseResponse
    {
        public HotelItineraryResponse(){}

        [XmlElement("Itinerary")]
        public Itinerary[] Itinerary { get; set; }
        [XmlAttribute]
        public int size { get; set; }
    }
    public class Itinerary
    {
        public Itinerary(){}

        public string affiliateCustomerId { get; set; }
        public long affiliateId { get; set; }
        public string creationDate { get; set; }
        public string creationTime { get; set; }
        public Customer Customer { get; set; }
        [XmlElement("HotelConfirmation")]
        public HotelConfirmation[] HotelConfirmation { get; set; }
        public string itineraryEndDate { get; set; }
        public long itineraryId { get; set; }
        public string itineraryStartDate { get; set; }
    }
    public class Customer
    {
        public Customer(){}

        [XmlElement("CustomerAddresses")]
        public CustomerAddress[] CustomerAddresses { get; set; }
        public string email { get; set; }
        public string extension { get; set; }
        public string faxPhone { get; set; }
        public string firstName { get; set; }
        public string homePhone { get; set; }
        public string lastName { get; set; }
        public string workPhone { get; set; }
    }
    public class CustomerAddress
    {
        public CustomerAddress(){}

        public string address1 { get; set; }
        public string address2 { get; set; }
        public string address3 { get; set; }
        public string city { get; set; }
        public string countryCode { get; set; }
        public bool isPrimary { get; set; }
        public string postalCode { get; set; }
        public string stateProvinceCode { get; set; }
        public int type { get; set; }
    }
    public class HotelConfirmation
    {
        public HotelConfirmation(){}

        public string affiliateConfirmationId { get; set; }
        public string arrivalDate { get; set; }
        public string cancellationNumber { get; set; }
        public string cancellationPolicy { get; set; }
        public string chainCode { get; set; }
        public ConfirmationExtras ConfirmationExtras { get; set; }
        public string confirmationNumber { get; set; }
        public CouponInformation CouponInformation { get; set; }
        public string creditCardType { get; set; }
        public string departureDate { get; set; }
        public GenericRefund GenericRefund { get; set; }
        [XmlElement("Hotel")]
        public Hotel[] Hotel { get; set; }
        public string locale { get; set; }
        public int nights { get; set; }
        [XmlIgnore]
        public bool nightsSpecified { get; set; }
        public bool nonRefundable { get; set; }
        [XmlIgnore]
        public bool nonRefundableSpecified { get; set; }
        public int numberOfAdults { get; set; }
        public int numberOfChildren { get; set; }
        public string rateCode { get; set; }
        public string rateDescription { get; set; }
        public HotelRateInfo RateInfo { get; set; }
        public RateInfos RateInfos { get; set; }
        public string rateType { get; set; }
        [XmlElement("ReservationGuest")]
        public ReservationGuest[] ReservationGuest { get; set; }
        public string roomDescription { get; set; }
        public string roomType { get; set; }
        public string roomTypeCode { get; set; }
        public string smokingPreference { get; set; }
        public string status { get; set; }
        public long supplierId { get; set; }
        public string supplierPropertyId { get; set; }
    }
    public class ConfirmationExtras
    {
        public ConfirmationExtras(){}

        [XmlElement("ConfirmationExtra")]
        public ConfirmationExtra[] ConfirmationExtra { get; set; }
        [XmlAttribute]
        public int size { get; set; }
    }
    public class ConfirmationExtra
    {
        public ConfirmationExtra(){}

        [XmlAttribute]
        public string name { get; set; }
        [XmlAttribute]
        public string value { get; set; }
    }
    public class CouponInformation
    {
        public CouponInformation(){}

        public string couponCode { get; set; }
        public string couponDiscount { get; set; }
        public string couponEmail { get; set; }
    }
    public class GenericRefund
    {
        public GenericRefund(){}

        public string currencyCode { get; set; }
        public string refundAmount { get; set; }
    }
    public class Hotel
    {
        public Hotel(){}

        public string address1 { get; set; }
        public string address2 { get; set; }
        public string address3 { get; set; }
        public string city { get; set; }
        public long confidence { get; set; }
        public string coordinateAccuracyCode { get; set; }
        public string countryCode { get; set; }
        public string fax { get; set; }
        public float highRate { get; set; }
        public long hotelId { get; set; }
        public float hotelRating { get; set; }
        [XmlIgnore]
        public bool hotelRatingSpecified { get; set; }
        public float latitude { get; set; }
        public float longitude { get; set; }
        public float lowRate { get; set; }
        public string market { get; set; }
        public string name { get; set; }
        public string phone { get; set; }
        public string postalCode { get; set; }
        public string region { get; set; }
        public string stateProvinceCode { get; set; }
        public string statusCode { get; set; }
        public string superRegion { get; set; }
        public string theme { get; set; }
        public float tripAdvisorRating { get; set; }
        [XmlIgnore]
        public bool tripAdvisorRatingSpecified { get; set; }
    }
    public class ReservationGuest
    {
        public ReservationGuest(){}

        public string firstName { get; set; }
        public string lastName { get; set; }
    }
}
